{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Nonlinear SVM Example\n",
    "\n",
    "This function wll illustrate how to implement the gaussian kernel on the iris dataset.\n",
    "\n",
    "Gaussian Kernel:\n",
    "\n",
    "$$K(x_{1}, x_{2}) = e^{\\left(-\\gamma \\cdot (x_{1} - x_{2})^{2}\\right)}$$\n",
    "\n",
    "We start by loading the necessary libraries and resetting the computational graph."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from sklearn import datasets\n",
    "from tensorflow.python.framework import ops\n",
    "ops.reset_default_graph()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create a graph session"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "sess = tf.Session()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Load the Iris Data\n",
    "\n",
    "Our x values will be $(x_1, x_2)$ where,\n",
    "\n",
    "$x_1 =$ 'Sepal Length'\n",
    "\n",
    "$x_2 =$ 'Petal Width'\n",
    "\n",
    "The Target values will be wether or not the flower species is Iris Setosa."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load the data\n",
    "# iris.data = [(Sepal Length, Sepal Width, Petal Length, Petal Width)]\n",
    "iris = datasets.load_iris()\n",
    "x_vals = np.array([[x[0], x[3]] for x in iris.data])\n",
    "y_vals = np.array([1 if y==0 else -1 for y in iris.target])\n",
    "class1_x = [x[0] for i,x in enumerate(x_vals) if y_vals[i]==1]\n",
    "class1_y = [x[1] for i,x in enumerate(x_vals) if y_vals[i]==1]\n",
    "class2_x = [x[0] for i,x in enumerate(x_vals) if y_vals[i]==-1]\n",
    "class2_y = [x[1] for i,x in enumerate(x_vals) if y_vals[i]==-1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Model Parameters\n",
    "\n",
    "We now declare our batch size, placeholders, and the fitted b-value for the SVM kernel.  Note that we will create a separate placeholder to feed in the prediction grid for plotting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Declare batch size\n",
    "batch_size = 150\n",
    "\n",
    "# Initialize placeholders\n",
    "x_data = tf.placeholder(shape=[None, 2], dtype=tf.float32)\n",
    "y_target = tf.placeholder(shape=[None, 1], dtype=tf.float32)\n",
    "prediction_grid = tf.placeholder(shape=[None, 2], dtype=tf.float32)\n",
    "\n",
    "# Create variables for svm\n",
    "b = tf.Variable(tf.random_normal(shape=[1,batch_size]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Gaussian (RBF) Kernel\n",
    "\n",
    "We create the gaussian kernel that is used to transform the data points into a higher dimensional space.\n",
    "\n",
    "The Kernel of two points, $x$ and $x'$ is given as\n",
    "\n",
    "$$K(x, x')=exp\\left(-\\gamma|| x-x' ||^{2}\\right)$$\n",
    "\n",
    "For $\\gamma$ very small, the kernel is very wide, and vice-versa for large $\\gamma$ values.  This means that large $\\gamma$ leads to high bias and low variance models.\n",
    "\n",
    "If we have a vector of points, $x$ of size (batch_size, 2), then our kernel calculation becomes\n",
    "\n",
    "$$K(\\textbf{x})=exp\\left( -\\gamma \\textbf{x} \\cdot \\textbf{x}^{T} \\right)$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Gaussian (RBF) kernel\n",
    "gamma = tf.constant(-50.0)\n",
    "sq_vec = tf.multiply(2., tf.matmul(x_data, tf.transpose(x_data)))\n",
    "my_kernel = tf.exp(tf.multiply(gamma, tf.abs(sq_vec)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Compute SVM Model\n",
    "\n",
    "Here, the SVM loss is given by two terms, The first term is the sum of the $b$ matrix, and the second term is \n",
    "\n",
    "$$\\sum\\left(K\\cdot||\\textbf{b}||^{2}||\\textbf{y}||^{2}\\right)$$\n",
    "\n",
    "We finally tell TensorFlow to maximize the loss by minimizing the negative:  (The following is a horribly abbreviated version of the dual problem)\n",
    "\n",
    "$$-\\left(\\sum\\textbf{b} - \\sum\\left(K\\cdot||\\textbf{b}||^{2}||\\textbf{y}||^{2}\\right)\\right)$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Compute SVM Model\n",
    "first_term = tf.reduce_sum(b)\n",
    "b_vec_cross = tf.matmul(tf.transpose(b), b)\n",
    "y_target_cross = tf.matmul(y_target, tf.transpose(y_target))\n",
    "second_term = tf.reduce_sum(tf.multiply(my_kernel, tf.multiply(b_vec_cross, y_target_cross)))\n",
    "loss = tf.negative(tf.subtract(first_term, second_term))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Define the Prediction Kernel\n",
    "\n",
    "Now we do the exact same thing as above for the prediction points."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Gaussian (RBF) prediction kernel\n",
    "rA = tf.reshape(tf.reduce_sum(tf.square(x_data), 1),[-1,1])\n",
    "rB = tf.reshape(tf.reduce_sum(tf.square(prediction_grid), 1),[-1,1])\n",
    "pred_sq_dist = tf.add(tf.subtract(rA, tf.multiply(2., tf.matmul(x_data, tf.transpose(prediction_grid)))), tf.transpose(rB))\n",
    "pred_kernel = tf.exp(tf.multiply(gamma, tf.abs(pred_sq_dist)))\n",
    "\n",
    "prediction_output = tf.matmul(tf.multiply(tf.transpose(y_target),b), pred_kernel)\n",
    "prediction = tf.sign(prediction_output-tf.reduce_mean(prediction_output))\n",
    "accuracy = tf.reduce_mean(tf.cast(tf.equal(tf.squeeze(prediction), tf.squeeze(y_target)), tf.float32))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Optimizing Method\n",
    "\n",
    "We declare our gradient descent optimizer and intialize our model variables (`b`)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Declare optimizer\n",
    "my_opt = tf.train.GradientDescentOptimizer(0.01)\n",
    "train_step = my_opt.minimize(loss)\n",
    "\n",
    "# Initialize variables\n",
    "init = tf.global_variables_initializer()\n",
    "sess.run(init)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Run the Classification!\n",
    "\n",
    "We iterate through the training for 300 iterations. We will output the loss every 75 iterations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Step #75\n",
      "Loss = -76.66029\n",
      "Step #150\n",
      "Loss = -189.16022\n",
      "Step #225\n",
      "Loss = -301.66013\n",
      "Step #300\n",
      "Loss = -414.16022\n"
     ]
    }
   ],
   "source": [
    "# Training loop\n",
    "loss_vec = []\n",
    "batch_accuracy = []\n",
    "for i in range(300):\n",
    "    rand_index = np.random.choice(len(x_vals), size=batch_size)\n",
    "    rand_x = x_vals[rand_index]\n",
    "    rand_y = np.transpose([y_vals[rand_index]])\n",
    "    sess.run(train_step, feed_dict={x_data: rand_x, y_target: rand_y})\n",
    "    \n",
    "    temp_loss = sess.run(loss, feed_dict={x_data: rand_x, y_target: rand_y})\n",
    "    loss_vec.append(temp_loss)\n",
    "    \n",
    "    acc_temp = sess.run(accuracy, feed_dict={x_data: rand_x,\n",
    "                                             y_target: rand_y,\n",
    "                                             prediction_grid:rand_x})\n",
    "    batch_accuracy.append(acc_temp)\n",
    "    \n",
    "    if (i+1)%75==0:\n",
    "        print('Step #' + str(i+1))\n",
    "        print('Loss = ' + str(temp_loss))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Plotting Results\n",
    "\n",
    "We now create a fine mesh for plotting the SVM class lines"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create a mesh to plot points in\n",
    "x_min, x_max = x_vals[:, 0].min() - 1, x_vals[:, 0].max() + 1\n",
    "y_min, y_max = x_vals[:, 1].min() - 1, x_vals[:, 1].max() + 1\n",
    "xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),\n",
    "                     np.arange(y_min, y_max, 0.02))\n",
    "grid_points = np.c_[xx.ravel(), yy.ravel()]\n",
    "[grid_predictions] = sess.run(prediction, feed_dict={x_data: x_vals,\n",
    "                                                   y_target: np.transpose([y_vals]),\n",
    "                                                   prediction_grid: grid_points})\n",
    "grid_predictions = grid_predictions.reshape(xx.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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pqYGgLfeeivgM23cuJEnn3zSaS1WVlaSl5fH7373Oy655BJuvvlmZs+ezVdffcWPf/xjPv30UwBnFoDSUs/EqGFhYdxxxx0A7Nq1i+rqasATrWzfvp2ioiL279/v3NcYw969eykpKaG4uJiioiLn3NGjRxMeHs6uXbsYMWKEcw/LwoULHTsWLVrExIkTOe6447juuuv40Y9+5NVi/u67pkG3+/btY8eOHUyePJlnn30WgM8/b1pO+vvvv+fSSy/lnHPO4bXXXgPg7bffBmDr1q0YY3j88cdpaGigoaGBo48+mvLycn75y1/So0cP9u/fz9ixYyksLGTt2rXs2bPHaelPnTrV+f/at28fAEVFRXz44YeUl5c7Nrzzzjucfvrp3HzzzaxevZrTTjuNJ554AoA9e5qSHkuWLOG9994DPP+H1kZrm73Xt99+C8C2bducv4dlzJgxXHPNNYSa9hSFXXgWGLf0adymKC2Sn58P4DimQNxxxx0sXLiQhQs9i5I98sgjvPjii9x+++3MmzePyy67jF//+tfMmzePuXPnOudZUUhN9SzMtnr1agD+93//lz59+ng5poaGBgoKCkhPT6d3797s2bPHRrcAXHPNNdx77718+OGHGGOcdMaSJUtYuHAhDz30kCMGycnJALz55ps0NDR4Xcfy9ttvU19fz3333Qd4hGTFihVUVFRwxx13cMstt1BfX8/8+fN57rnneOGFF7yewRIfH8/atWsB+Prrr53te/bscY61YgoeB5yfn09ZWRllZWWUlJQ4x+fm5vL888/zu9/9jkmTJlFWVkZDQ4Nz7osvvsiAAQPo06cPAJMnT2bevHmMGjWKF154gd///vfOs37//ffOefn5+dx+++28++67XHLJJQBeU9x89NFH/OMf/2DZsmU88sgjQJNTjYvzLHntTi/FxcVRUVHBZ599xuWXX05aWhrJyckUFRXx5ptvAjBhwgTnb2H/v/Lz85k0aZKTynLz6quv8tFHHzF79mw+++wzRo4c6dw7Pz+fqKgocnNzWbJkiSMGVgBiY2Od66SkpJCWlub8fxQUFHgdM2DAAObOnUtYWOhddnuKwmLgmsZeSCcDJUbrCZ2Wc889l8cff7xN7mWdVXFxccBjli9fziuvvALgfOGXLVsGQN++fQFYtWqV06pzO2DrmFJSUgCPQ01ISGDgwIHEx8dTVVUFwKhRo7j22mtpaGggIyODzMxMKioqmrWUAc444wxGjhxJaWkpIsI777xDcXExxhh27fK0hazYvfXWW4SHh9OnTx/efPNNevTowebNmwFYs2YNvXv35phjjgE8omDtHTBggGOzveaXX37p9ZlZ3C1yK0qjRo1iz549rFmzBoAtW7Y4x3z44YfU1NRQWlpKaWkpJSUl1NTUsH//fnr37s1ll13GXXfd5Tjhe+65h969e1NRUcHy5cu58MILmThxIuBxvKNHj+add97hsssu47777iMrK4vt27ezY8cOJwpaunQp//jHP7j77rt59dVXycnJoaamhqSkJHr16uU8GzRFj5aICE+5NDEx0dlmRaGiosKxMyUlhaKiIt555x1yc3PJyMjw2m6MIS8vj5ycHE499VSSkpI455xznGu6P9e6ujpGjRpFfHy88/eMj49n4sSJTv0Cmhy+FQ/LoEGDmomCFdd58+YxbNgw2oJQdkmdD3wCHCsiO0XkOhGZKSIzGw9ZAmzFs7bt03jWqFU6ITU1NSxbtox///vfzfbl5+cHdN4lJSWOI2yJqqoqp/VurwnNIwVjDFu2bKGuro7bbruNfv36MXPmTD744ANKSkr47LPPnPu6rw3eob51sklJSYDHEY8cOZKwsDBiY2OprKx0nKdtiaenp5OZmQl4HJS7VXnPPfdw8cUX88UXXwAwbNgwduzY4dhv75eXl8cpp5zCgw8+yKWXXsru3buZO3cupaWl3HrrrYBHoEaOHElUVBTQJAqRkZH07t3bcYJWFGwKzDJv3jz69+/P9u3bARg6dKiz76STTiIvL48VK1YAeInb0qVLAZxIobS01PnM7HNDkxN+6KGH2LdvH0888QRVVVVccMEF/PrXv+bVV18lK6spQfDUU0/x8MMPU1RUxC9+8Qu+//57hgwZQkxMjJNumTZtGtAk5n379iUjI8N5trFjx+KLFQnfSKG0tJSqqirHIScnJ1NcXMx3333n9VkkJyc7oldVVUVGRgazZs3itdde489//jNTpkxx7jN8+HCOPfZYwCOs7kghLi6O6667zss2f5ECQE5OjhPp2JSV/V/3FZBQEjJRMMZMN8ZkGmMijTF9jDHPGmOeMsY81bjfGGNuMcYcY4wZbozRqU87Kbt27XJyzr5kZGQ4rVpfbrvtNufL1RIzZ86kb9++Tu7ZflF8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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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S5aEHU1EihgVSJw6+uijmTBhAlOmTGHTpk3Uq1ePXr168euvv4YdTUSKCBVInGvVqhXRaJTOnTvz6KOPUrNmTWbPnh12LBEpAlQghUD58uUZMWIEM2bMYNeuXTRu3Jjrr7+erVu3hh1NRAoxFUghct5557Fy5UpuueUWhg0bRkJCAm+//XbYsUSkkFKBFDKHHXYYgwYNYv78+ZQrV44LL7yQq666iu+++y7saCJSyKhACqkzzjiDpUuXcs899zBhwgQikQgTJkzQdCgikmtUIIVY6dKlue+++1iyZAknnngi7dq1o1WrVnz11VdhRxORQkAFUgTUqFGDDz/8kMcff5z33nuPSCTC888/r7MRETkoKpAiokSJEtx2222sXLmSpKQkrr32Wpo2bconn3wSdjQRiVMqkCLmlFNO4f333+e5555j8eLFVK9enUGDBmlyRhE5YCqQIqhYsWJ07dqVaDRKkyZNuO222zjzzDNJS0sLO5qIxBEVSBFWpUoV3njjDV5++WU+/fRTateuzX333cfOnTvDjiYicUAFUsSZGVdccQXRaJS2bdvSr18/6tSpw+LFi8OOJiIFnApEAKhUqRIvvfQSU6dOZcuWLZxxxhncfvvt/PLLL2FHE5ECSgUi/+Piiy8mPT2da6+9loEDB1KjRg1mzZoVdiwRKYBUIPIXRxxxBMOGDeP9998HoEmTJvzf//0fP/74Y8jJRKQgUYFIls4991xWrFjB7bffzvPPP08kEuGNN94IO5aIFBAqENmnQw89lMcee4wFCxZQsWJFLrnkEq688ko2bdoUdjQRCZkKRLKlbt26pKSkcN999/HKK69QrVo1Xn75ZU2HIlKEqUAk20qVKsU999zDsmXLOOWUU2jfvj2XXHIJ69evDzuaiIRABSIHLCEhgXnz5jFo0CBmzpxJJBLhueeeY/fu3WFHE5F8pAKRHClevDi33HILaWlp1K1bl+uuu44mTZqwZs2asKOJSD5RgchBOfnkk5kxYwYjRoxg2bJl1KhRg8cff5xdu3aFHU1E8pgKRA6amXHNNdcQjUZp1qwZd9xxBw0aNGDFihVhRxORPKQCkVxz/PHH89prrzFhwgS++OIL6tSpw7333suOHTvCjiYieUAFIrnKzLjssstYtWoV7dq14/7776d27dosWLAg7GgikstUIJInKlasyNixY3nrrbfY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M7OtmSzbiH0eRERCkJCQwLx583jiiSeYNWsWCQkJDBs2jN27d4cdTYqQfRaIux/u7uUyWQ539xL5FVJE/qp48eLcfPPNrFy5knr16tGtWzeaNGnCmjU5nqZO5IAczCUsESkATj75ZKZPn87IkSNJTU2lRo0aPPbYY+zatWv/DxY5CCoQkULAzOjcuTPRaJTmzZvTs2dPGjRowIoVK8KOJoWYCkSkEDnuuOOYMmUKEydO5Msvv6ROnTrcc8897NixI+xoUgipQEQKGTOjbdu2RKNRrrjiCh544AFq167NggULwo4mhYwKRKSQqlixIi+++CJvv/0227Zt48wzz+SWW27h559/DjuaFBIqEJFC7vzzzyctLY1u3brx5JNPkpiYyIwZM8KOJYWACkSkCChXrhxDhw5l9uzZlCxZkn/+85906dKFH374IexoEsdUICJFSKNGjVi+fDl33nknY8aMIRKJ8Nprr4UdS+KUCkSkiDnkkEN4+OGHWbhwIUcffTT/+te/uOyyy/jmm2/CjiZxRgUiUkTVqVOHxYsX89BDD/H6668TiUQYO3asJmeUbFOBiBRhJUuW5K677iI1NZXTTz+dDh06cMEFF/Dll1+GHU3igApERKhWrRpz5szh6aefZs6cOSQkJDB06FBNzij7pAIREQCKFSvGDTfcQFpaGg0aNKBHjx40btyY1atXhx1NCigViIj8j6pVqzJt2jReeOEF0tLSqFmzJgMGDNDkjPIXKhAR+Qszo1OnTqxatYoLL7yQ3r17U79+fVJTU8OOJgWICkREslS5cmUmT57MK6+8woYNG0hOTqZPnz5s37497GhSAKhARGS/2rRpQzQa5d///jf9+/cnKSmJefPmhR1LQqYCEZFsOfLII3nhhReYNm0a27dvp1GjRtx444389NNPYUeTkKhAROSANGvWjLS0NHr06MGQIUNITEzkvffeCzuWhEAFIiIHrGzZsn98ZqRMmTI0b96cq6++mu+//z7saJKPVCAikmNnnXUWqamp3HXXXYwdO5ZIJMLkyZPDjiX5RAUiIgelTJkyPPTQQ6SkpHDcccdx6aWXcumll/L111+HHU3ymApERHJFUlISCxcuZMCAAbz55ptUq1aN0aNHa3LGQkwFIiK5pmTJkvTq1Yvly5eTmJjI1VdfTfPmzfn888/DjiZ5QAUiIrnuH//4Bx988AFDhw7lww8/JDExkcGDB2tyxkJGBSIieaJYsWJcf/31pKWl/fGZkUaNGrFq1aqwo0kuUYGISJ468cQTefvtt3nxxRf56KOPSEpKon///vz2229hR5ODpAIRkTxnZvz73/8mGo3SqlUr+vTpQ926dVm6dGnY0eQgqEBEJN8cc8wxTJgwgSlTpvDNN99Qr1497rzzTn799dewo0kOqEBEJN+1atWKaDRKp06deOSRR0hKSmLOnDlhx5IDpAIRkVBUqFCB559/nunTp7Nz507OPvtsunfvzrZt28KOJtkUSoGY2QNmtsLMUs3sPTM7Lhg3M3vazNYG99fO8JiOZrYmWDqGkVtEcl/Tpk1JS0vj5ptv5tlnnyUhIYF33nkn7FiSDWGdgTzm7jXcPQl4E7gnGD8fODVYugLPApjZkcC9QH2gHnCvmVXI99QikicOO+wwnnjiCebNm0fZsmW54IIL6NChA5s3bw47muxDKAXi7lszfHkYsGeug5bAix6zAChvZscCzYHp7v69u28BpgMt8jW0iOS5Bg0asGzZMvr27cu4ceOoVq0aEydO1HQoBVRor4GY2UNmtg5oz59nIMcD6zKstj4Yy2pcRAqZ0qVLc//997NkyRL+9re/cfnll9O6dWu++uqrsKPJXvKsQMxshpmlZbK0BHD3Pu5+AvAS0CMXt9vVzFLMLGXTpk259bQiks9q1KjBggULePTRR3n33XeJRCKMHDlSZyMFSJ4ViLs3dffETJbX91r1JaBNcHsDcEKG+6oEY1mNZ7bd4e6e7O7JlSpVyp2dEZFQlChRgjvuuIMVK1ZQs2ZNrrnmGv75z3/y6aefhh1NCO9dWKdm+LIl8FFweyrQIXg31hnAj+6+EZgGNDOzCsGL582CMREpAk499VRmzZrFs88+y6JFi6hevTpPPvkkv//+e9jRirSwXgMZEFzOWkGsDG4Kxt8GPgXWAiOA6wHc/XvgAWBxsNwfjIlIEVGsWDGuu+460tPTOffcc7nlllto2LAh0Wg07GhFlhXm64nJycmekpISdgwRyWXuzrhx47jxxhvZunUrffv2pVevXpQqVSrsaIWCmS1x9+T9radPootI3DEzrrzySlatWkWbNm245557SE5OZvHixWFHK1JUICIStypVqsS4ceN4/fXX2bx5M2eccQY9e/bkl19+CTtakaACEZG4d8kllxCNRunSpQuPPfYYNWvW5IMPPgg7VqGnAhGRQuGII45g+PDhzJw5k927d3POOefQrVs3tm7duv8HS46oQESkUGnSpAkrV67ktttuY/jw4SQkJPDWW2+FHatQUoGISKFz6KGH8vjjj/Phhx9Svnx5LrroItq3b49mp8hdKhARKbTq1avHkiVL6NevH5MmTSISiTB+/HhNh5JLVCAiUqiVKlWKe++9l6VLl3LyySdzxRVX0LJlSzZsyHQ2JDkAKhARKRISExOZP38+AwcOZMaMGUQiEUaMGKGzkYOgAhGRIqN48eLceuutrFy5kjp16tDn2fNmAAANHElEQVS1a1fOO+88Pvnkk7CjxSUViIgUOX//+9+ZOXMmI0aMYMmSJVSvXp2BAwdqcsYDpAIRkSLJzLjmmmuIRqM0bdqU22+/nQYNGpCWlhZ2tLihAhGRIu3444/n9ddfZ/z48Xz++efUrl2bfv36sXPnzrCjFXgqEBEp8syMyy+/nGg0ymWXXcZ9991H7dq1WbRoUdjRCjQViIhI4KijjuI///kPb775Jj/++CMNGjTgtttu0+SMWVCBiIjs5cILLyQ9PZ2uXbsyaNAgqlevzvvvvx92rAJHBSIikoly5crx7LPP8t///pdixYpx3nnnce211/LDDz+EHa3AUIGIiOxD48aNWbFiBT179mTUqFEkJCQwderUsGMVCCoQEZH9OOSQQ3jkkUdYuHAhFStWpGXLlrRr145vv/027GihUoGIiGRTcnIyKSkpPPDAA0yZMoVIJMJLL71UZKdDUYGIiByAUqVKcffdd7Ns2TJOPfVUrrrqKi6++GLWrVsXdrR8pwIREcmBSCTC3LlzefLJJ5k1axYJCQkMGzaM3bt3hx0t36hARERyqHjx4tx0002kpaVRv359unXrxrnnnsuaNWvCjpYvVCAiIgfppJNO4r333mPkyJEsX76cGjVq8Oijj7Jr166wo+UpFYiISC4wMzp37kw0GqVFixb06tWLM844g+XLl4cdLc+oQEREctFxxx3Hq6++ysSJE1m3bh3Jycn07duXHTt2hB0t16lARERymZnRtm1botEoV155JQ8++CC1atXiww8/DDtarlKBiIjkkYoVKzJmzBjeeecdfv75Z8466yxuvvlmfvrpp7Cj5QoViIhIHmvRogVpaWlcf/31PPXUU1SvXp3p06eH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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "# Plot points and grid\n",
    "plt.contourf(xx, yy, grid_predictions, cmap=plt.cm.Paired, alpha=0.8)\n",
    "plt.plot(class1_x, class1_y, 'ro', label='I. setosa')\n",
    "plt.plot(class2_x, class2_y, 'kx', label='Non setosa')\n",
    "plt.title('Gaussian SVM Results on Iris Data')\n",
    "plt.xlabel('Petal Length')\n",
    "plt.ylabel('Sepal Width')\n",
    "plt.legend(loc='lower right')\n",
    "plt.ylim([-0.5, 3.0])\n",
    "plt.xlim([3.5, 8.5])\n",
    "plt.show()\n",
    "\n",
    "# Plot batch accuracy\n",
    "plt.plot(batch_accuracy, 'k-', label='Accuracy')\n",
    "plt.title('Batch Accuracy')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.legend(loc='lower right')\n",
    "plt.show()\n",
    "\n",
    "# Plot loss over time\n",
    "plt.plot(loss_vec, 'k-')\n",
    "plt.title('Loss per Generation')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Loss')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Evaluate Test Points\n",
    "\n",
    "We create a set of test points, and evaluate the class predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_test_seq = np.array([4., 5., 6., 7.])\n",
    "y_test_seq = np.array([0., 1., 2.])\n",
    "\n",
    "x_test, y_test = np.meshgrid(x_test_seq,y_test_seq)\n",
    "test_points = np.c_[x_test.ravel(), y_test.ravel()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[4., 0.],\n",
       "       [5., 0.],\n",
       "       [6., 0.],\n",
       "       [7., 0.],\n",
       "       [4., 1.],\n",
       "       [5., 1.],\n",
       "       [6., 1.],\n",
       "       [7., 1.],\n",
       "       [4., 2.],\n",
       "       [5., 2.],\n",
       "       [6., 2.],\n",
       "       [7., 2.]])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_points"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can evaluate the predictions on our test points:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[4., 0.],\n",
       "       [5., 0.],\n",
       "       [6., 0.],\n",
       "       [7., 0.],\n",
       "       [4., 1.],\n",
       "       [5., 1.],\n",
       "       [6., 1.],\n",
       "       [7., 1.],\n",
       "       [4., 2.],\n",
       "       [5., 2.],\n",
       "       [6., 2.],\n",
       "       [7., 2.]])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_points"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "[test_predictions] = sess.run(prediction, feed_dict={x_data: x_vals,\n",
    "                                                     y_target: np.transpose([y_vals]),\n",
    "                                                     prediction_grid: test_points})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.,  1.,  1.,  1.,  1., -1., -1.,  1.,  1.,  1., -1., -1.],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_predictions.ravel()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Format the test points together with the predictions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Point [4. 0.] is predicted to be in class 1.0\n",
      "Point [5. 0.] is predicted to be in class 1.0\n",
      "Point [6. 0.] is predicted to be in class 1.0\n",
      "Point [7. 0.] is predicted to be in class 1.0\n",
      "Point [4. 1.] is predicted to be in class 1.0\n",
      "Point [5. 1.] is predicted to be in class -1.0\n",
      "Point [6. 1.] is predicted to be in class -1.0\n",
      "Point [7. 1.] is predicted to be in class 1.0\n",
      "Point [4. 2.] is predicted to be in class 1.0\n",
      "Point [5. 2.] is predicted to be in class 1.0\n",
      "Point [6. 2.] is predicted to be in class -1.0\n",
      "Point [7. 2.] is predicted to be in class -1.0\n"
     ]
    }
   ],
   "source": [
    "for ix, point in enumerate(test_points):\n",
    "    point_pred = test_predictions.ravel()[ix]\n",
    "    print('Point {} is predicted to be in class {}'.format(point, point_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
